package peace.htmllooker
{
import flash.text.StyleSheet;

import peace.htmllooker.node.Image;
import peace.htmllooker.node.form.Form;
import peace.htmllooker.node.form.FormField;
import peace.htmllooker.node.list.List;
import peace.htmllooker.node.table.Table;
/**
* Гейт для расширения набора тегов Htmllooker
*/
public class NodeFactory
{
	/**
	 * Хеш поддерживаемых узлов с полями {nodeName:NodeClass}<br><br>
	 * 
	 * Переопределяем или дополняем в расширениях
	 */
	public var nodeClasses:Object = 
	{
		img: Image,
		table: Table,
		form: Form,
		input: FormField,
		select: FormField,
		textarea: FormField,
		ol: List,
		ul: List
	}
	/**
	 * Массив имен родительских узлов (расширений VerticalHtmlBox)<br><br> 
	 * 
	 * Переопределяем или дополняем в расширениях
	 */	
	public var parentNodeNames:Array = ["body", "form", "td", "th", "li"];
	
	public function NodeFactory()
	{
	}
	/**
	 * 
	 * @param nodeName
	 * @return 
	 * 
	 */	
	public function has (nodeName:String):Boolean
	{
		return nodeClasses.hasOwnProperty(nodeName);
	}
	/**
	 * 
	 * @param xml
	 * @param css
	 * @return 
	 * 
	 */	
	public function getNode (xml:XML, css:StyleSheet):Node
	{
		return new nodeClasses[xml.localName()] (xml, css);
	}

}

}